package com.xyz.practice.jdbc.databasemetadata;

import java.io.Serializable;
import java.sql.RowIdLifetime;

public class Database implements Serializable {

    private static final long serialVersionUID = -1225713110410721872L;
    /**
     * Retrieves whether the current user can call all the procedures returned by the method
     * getProcedures.
     */
    private boolean           allProceduresAreCallable;
    /**
     * Retrieves whether the current user can use all the tables returned by the method getTables in
     * a SELECT statement.
     */
    private boolean           allTablesAreSelectable;
    /**
     * Retrieves whether a SQLException while autoCommit is true inidcates that all open ResultSets
     * are closed, even ones that are holdable. When a SQLException occurs while autocommit is true,
     * it is vendor specific whether the JDBC driver responds with a commit operation, a rollback
     * operation, or by doing neither a commit nor a rollback. A potential result of this difference
     * is in whether or not holdable ResultSets are closed.
     */
    private boolean           autoCommitFailureClosesAllResultSets;
    /**
     * Retrieves whether a data definition statement within a transaction forces the transaction to
     * commit
     */
    private boolean           dataDefinitionCausesTransactionCommit;
    /**
     * Retrieves whether this database ignores a data definition statement within a transaction
     */
    private boolean           dataDefinitionIgnoredInTransactions;
    /**
     * Retrieves whether or not a visible row delete can be detected by calling the method
     * ResultSet.rowDeleted. If the method deletesAreDetected returns false, it means that deleted
     * rows are removed from the result set
     */
    private boolean           deletesAreDetected;
    /**
     * Retrieves whether the return value for the method getMaxRowSize includes the SQL data types
     * LONGVARCHAR and LONGVARBINARY
     */
    private boolean           doesMaxRowSizeIncludeBlobs;
    /**
     * Retrieves the String that this database uses as the separator between a catalog and table
     * name
     */
    private String            catalogSeparator;
    /**
     * Retrieves the database vendor's preferred term for "catalog".
     */
    private String            catalogTerm;
    /**
     * Retrieves the major version number of the underlying database.
     */
    private int               databaseMajorVersion;
    /**
     * Retrieves the minor version number of the underlying database.
     */
    private int               databaseMinorVersion;
    /**
     * Retrieves the name of this database product.
     */
    private String            databaseProductName;
    /**
     * Retrieves the version number of this database product.
     */
    private String            databaseProductVersion;
    /**
     * Retrieves this database's default transaction isolation level. The possible values are
     * defined in java.sql.Connection
     */
    private int               defaultTransactionIsolation;
    /**
     * Retrieves this JDBC driver's major version number.
     */
    private int               driverMajorVersion;
    /**
     * Retrieves this JDBC driver's minor version number
     */
    private int               driverMinorVersion;
    /**
     * Retrieves the name of this JDBC driver
     */
    private String            driverName;
    /**
     * Retrieves the version number of this JDBC driver as a String.
     */
    private String            driverVersion;
    /**
     * Retrieves all the "extra" characters that can be used in unquoted identifier names (those
     * beyond a-z, A-Z, 0-9 and _)
     */
    private String            extraNameCharacters;
    /**
     * Retrieves the string used to quote SQL identifiers. This method returns a space " " if
     * identifier quoting is not supported
     */
    private String            identifierQuoteString;
    /**
     * Retrieves the major JDBC version number for this driver
     */
    private int               jdbcMajorVersion;
    /**
     * Retrieves the minor JDBC version number for this driver
     */
    private int               jdbcMinorVersion;
    /**
     * Retrieves the maximum number of hex characters this database allows in an inline binary
     * literal
     */
    private int               maxBinaryLiteralLength;
    /**
     * Retrieves the maximum number of characters that this database allows in a catalog name
     */
    private int               maxCatalogNameLength;
    /**
     * Retrieves the maximum number of characters this database allows for a character literal.
     */
    private int               maxCharLiteralLength;
    /**
     * Retrieves the maximum number of characters this database allows for a column name.
     */
    private int               maxColumnNameLength;
    /**
     * Retrieves the maximum number of columns this database allows in a GROUP BY clause.
     */
    private int               maxColumnsInGroupBy;
    /**
     * Retrieves the maximum number of columns this database allows in an index.
     */
    private int               maxColumnsInIndex;
    /**
     * Retrieves the maximum number of columns this database allows in an ORDER BY clause.
     */
    private int               maxColumnsInOrderBy;
    /**
     * Retrieves the maximum number of columns this database allows in a SELECT list.
     */
    private int               maxColumnsInSelect;
    /**
     * Retrieves the maximum number of columns this database allows in a table.
     */
    private int               maxColumnsInTable;
    /**
     * Retrieves the maximum number of concurrent connections to this database that are possible.
     */
    private int               maxConnections;
    /**
     * Retrieves the maximum number of characters that this database allows in a cursor name.
     */
    private int               maxCursorNameLength;
    /**
     * Retrieves the maximum number of bytes this database allows for an index, including all of the
     * parts of the index.
     */
    private int               maxIndexLength;
    /**
     * Retrieves the maximum number of characters that this database allows in a procedure name.
     */
    private int               maxProcedureNameLength;
    /**
     * Retrieves the maximum number of bytes this database allows in a single row.
     */
    private int               maxRowSize;
    /**
     * Retrieves the maximum number of characters that this database allows in a schema name.
     */
    private int               maxSchemaNameLength;
    /**
     * Retrieves the maximum number of characters this database allows in an SQL statement.
     */
    private int               maxStatementLength;
    /**
     * Retrieves the maximum number of active statements to this database that can be open at the
     * same time.
     */
    private int               maxStatements;
    /**
     * Retrieves the maximum number of characters this database allows in a table name.
     */
    private int               maxTableNameLength;
    /**
     * Retrieves the maximum number of tables this database allows in a SELECT statement.
     */
    private int               maxTablesInSelect;
    /**
     * Retrieves the maximum number of characters this database allows in a user name.
     */
    private int               maxUserNameLength;
    /**
     * Retrieves a comma-separated list of math functions available with this database. These are
     * the Open /Open CLI math function names used in the JDBC function escape clause.
     */
    private String            numericFunctions;
    /**
     * Retrieves the database vendor's preferred term for "procedure".
     */
    private String            procedureTerm;
    /**
     * Retrieves this database's default holdability for ResultSet objects.
     */
    private int               resultSetHoldability;
    /**
     * Indicates whether or not this data source supports the SQL ROWID type, and if so the lifetime
     * for which a RowId object remains valid.
     */
    private RowIdLifetime     rowIdLifetime;
    /**
     * Retrieves the database vendor's preferred term for "schema".
     */
    private String            schemaTerm;
    /**
     * Retrieves the string that can be used to escape wildcard characters. This is the string that
     * can be used to escape '_' or '%' in the catalog search parameters that are a pattern (and
     * therefore use one of the wildcard characters).
     */
    private String            searchStringEscape;
    /**
     * Retrieves a comma-separated list of all of this database's SQL keywords that are NOT also
     * SQL:2003 keywords.
     */
    private String            sqlKeywords;
    /**
     * Indicates whether the SQLSTATE returned by SQLException.getSQLState is X/Open (now known as
     * Open Group) SQL CLI or SQL:2003.
     */
    private int               sqlStateType;
    /**
     * Retrieves a comma-separated list of string functions available with this database. These are
     * the Open Group CLI string function names used in the JDBC function escape clause.
     */
    private String            stringFunctions;
    /**
     * Retrieves a comma-separated list of system functions available with this database. These are
     * the Open Group CLI system function names used in the JDBC function escape clause.
     */
    private String            systemFunctions;
    /**
     * Retrieves a comma-separated list of the time and date functions available with this database.
     */
    private String            timeDateFunctions;
    /**
     * Retrieves the URL for this DBMS.
     */
    private String            url;
    /**
     * Retrieves the user name as known to this database.
     */
    private String            userName;
    /**
     * Retrieves whether or not a visible row insert can be detected by calling the method
     * ResultSet.rowInserted.
     */
    private boolean           insertsAreDetected;
    /**
     * Retrieves whether a catalog appears at the start of a fully qualified table name. If not, the
     * catalog appears at the end.
     */
    private boolean           isCatalogAtStart;
    /**
     * Retrieves whether this database is in read-only mode.
     */
    private boolean           isReadOnly;
    /**
     * Indicates whether updates made to a LOB are made on a copy or directly to the LOB.
     */
    private boolean           locatorsUpdateCopy;
    /**
     * Retrieves whether this database supports concatenations between NULL and non-NULL values
     * being NULL.
     */
    private boolean           nullPlusNonNullIsNull;
    /**
     * Retrieves whether NULL values are sorted at the end regardless of sort order.
     */
    private boolean           nullsAreSortedAtEnd;
    /**
     * Retrieves whether NULL values are sorted at the start regardless of sort order.
     */
    private boolean           nullsAreSortedAtStart;
    /**
     * Retrieves whether NULL values are sorted high. Sorted high means that NULL values sort higher
     * than any other value in a domain. In an ascending order, if this method returns true, NULL
     * values will appear at the end. By contrast, the method nullsAreSortedAtEnd indicates whether
     * NULL values are sorted at the end regardless of sort order.
     */
    private boolean           nullsAreSortedHigh;
    /**
     * Retrieves whether NULL values are sorted low. Sorted low means that NULL values sort lower
     * than any other value in a domain. In an ascending order, if this method returns true, NULL
     * values will appear at the beginning. By contrast, the method nullsAreSortedAtStart indicates
     * whether NULL values are sorted at the beginning regardless of sort order.
     */
    private boolean           nullsAreSortedLow;
    /**
     * Retrieves whether deletes made by others are visible.
     */
    private boolean           othersDeletesAreVisible;
    /**
     * Retrieves whether inserts made by others are visible.
     */
    private boolean           othersInsertsAreVisible;
    /**
     * Retrieves whether updates made by others are visible.
     */
    private boolean           othersUpdatesAreVisible;
    /**
     * Retrieves whether a result set's own deletes are visible.
     */
    private boolean           ownDeletesAreVisible;
    /**
     * Retrieves whether a result set's own inserts are visible.
     */
    private boolean           ownInsertsAreVisible;
    /**
     * Retrieves whether for the given type of ResultSet object, the result set's own updates are
     * visible.
     */
    private boolean           ownUpdatesAreVisible;
    /**
     * Retrieves whether this database treats mixed case unquoted SQL identifiers as case
     * insensitive and stores them in lower case.
     */
    private boolean           storesLowerCaseIdentifiers;
    /**
     * Retrieves whether this database treats mixed case quoted SQL identifiers as case insensitive
     * and stores them in lower case.
     */
    private boolean           storesLowerCaseQuotedIdentifiers;
    /**
     * Retrieves whether this database treats mixed case unquoted SQL identifiers as case
     * insensitive and stores them in mixed case.
     */
    private boolean           storesMixedCaseIdentifiers;
    /**
     * Retrieves whether this database treats mixed case quoted SQL identifiers as case insensitive
     * and stores them in mixed case.
     */
    private boolean           storesMixedCaseQuotedIdentifiers;
    /**
     * Retrieves whether this database treats mixed case unquoted SQL identifiers as case
     * insensitive and stores them in upper case.
     */
    private boolean           storesUpperCaseIdentifiers;
    /**
     * Retrieves whether this database supports ALTER TABLE with add column.
     */
    private boolean           supportsAlterTableWithAddColumn;
    /**
     * Retrieves whether this database supports ALTER TABLE with drop column.
     */
    private boolean           supportsAlterTableWithDropColumn;
    /**
     * Retrieves whether this database supports the ANSI92 entry level SQL grammar.
     */
    private boolean           supportsANSI92EntryLevelSQL;
    /**
     * Retrieves whether this database supports the ANSI92 full SQL grammar supported.
     */
    private boolean           supportsANSI92FullSQL;
    /**
     * Retrieves whether this database supports the ANSI92 intermediate SQL grammar supported.
     */
    private boolean           supportsANSI92IntermediateSQL;
    /**
     * Retrieves whether this database supports batch updates.
     */
    private boolean           supportsBatchUpdates;
    /**
     * Retrieves whether a catalog name can be used in a data manipulation statement.
     */
    private boolean           supportsCatalogsInDataManipulation;
    /**
     * Retrieves whether a catalog name can be used in an index definition statement.
     */
    private boolean           supportsCatalogsInIndexDefinitions;
    /**
     * Retrieves whether a catalog name can be used in a privilege definition statement.
     */
    private boolean           supportsCatalogsInPrivilegeDefinitions;
    /**
     * Retrieves whether a catalog name can be used in a procedure call statement.
     */
    private boolean           supportsCatalogsInProcedureCalls;
    /**
     * Retrieves whether a catalog name can be used in a table definition statement.
     */
    private boolean           supportsCatalogsInTableDefinitions;
    /**
     * Retrieves whether this database supports column aliasing.
     */
    private boolean           supportsColumnAliasing;
    /**
     * Retrieves whether this database supports the JDBC scalar function CONVERT for the conversion
     * of one JDBC type to another. The JDBC types are the generic SQL data types defined in
     * java.sql.Types.
     */
    private boolean           supportsConvert;
    /**
   * 
   */

}
